pokefanonfandomcom_es-20200213-history
Scripts Pokémon
Nota:Este tutoríal es de Whack a Hack!. Solo lo estoy incluyendo aquí: thumb|Explicación de toooodos los comandosBaserubyIdiomaes Tras hablar con la gran cantidad de gente que me agrega al msn porque no le da la gana de preguntar en foros y prefieren molestarme >_< (por favor no lo hagais, para las dudas están los foros), me he dado cuenta de que el mayor problema a la hora de hacer scripts es no comprender los comandos, porque no saben inglés y no entienden el commands.html que viene con elitemap. Rubycode es el lenguage que utiliza Scripted y sus precursores Rubikon y Diamond Cutter. Entender este lenguaje es el primer paso para poder hacer un buen script, así que lo he traducido a español. Entre paréntesis está la traducción el nombre del comando, aunque tienes que usar el nombre en inglés. Debajo del nombre aparece su formato. Luego su descripción y después un ejemplo. Ahora que sabeis que significan, un consejo: leed los scripts como si fueran textos. Por ejemplo: #org 0x800000 faceplayer message 0x800100 boxset 0x06 end “Empieza a escribir en 0x800000, encara el sprite al jugador y muestra el mensaje escrito en 800100, según el parámetro 0x06 (cerrar al pulsar A) Comandos de RubiKode Está altamente recomendado escribir los comandos en minúsculas y cualquier cosa "#definida" en mayúsculas. Comandos de preprograma Son comandos que no se compilan, pero que coordinan el funcionamiento del programa #include (#incluye) #include nombredelarchivo Incluye otro archivo en el proceso de compilación. Las comillas se quitan automáticamente. Ejemplo: #include "misconfiguraciones.rbh" #include stdpoke.rbh #define (#define) #define nombre_simbolo índice_número Te permite definir símbolos para reemplazar números. Solo se permiten números pero pueden ser de cualquier tamaño de byte a dword. Es recomendable usar mayúsculas para el nombre del símbolo. Ejemplo: #define MASTERBALL 1 \'Entonces, cada vez que escribas MASTERBALL, Scripted compilará un “1” (cabe añadir que la masterball es el primer objeto de la lista) #org Indica un cursor para el compilador, a un sitio específico del rom (indica donde empieza a escribir el guión) Ejemplo: #org 0x605040 \'continúa (o empieza) a escribir en el offset 0x605040 #autobank (#autobanco) #autobank on #autobank off Algunos prefieren hacerlo manualmente, otros no. Autobank inserta en los punteros un 08 automáticamente. Solo #org no está afectado )porque, como archivo, el rom empieza en el offset 0x000000) Autobank, por defecto (porque se incluye #autobank on en std.rbh) está activo, asíq eu no te preocupes por el. Ejemplo: #autobank on message 0x604020 \'se vuelve 0F00 08604020 #autobank off message 0x604020 \'se vuelve 0F00 00604020, Lo cual no es bueno. #raw Aliados: #binary #raw aLot Inserta una carga de datos raw en el ROM. Puede ser usado para comandos defectuosos o no soportados así como para los datos de movimiento. Para determinar que tipo de datos usar, escribelo antes de los números. Por defecto es byte. Puedes usar los prefijos hexadecimales 0x o &H, pero no son necesarios Los tipos de datos pueden ser: * byte (tambien char) * word (tambien int o integer) * dword (tambien long) * pointer (tambien ptr) Ejemplo: #raw 12 69 word 1234 dword 12345678 pointer 0xABCDEF Este ejemplo insertaría dos bytes, un word, un dword y un puntero. Ten en cuenta que el puntero es afectado por Autobank y Dword no = = texto Inserta un texto basado en una tabla hecha por los creadores de Elitemap Ejemplo: = ¡Hola, soy tan feliz y estúpido!\feliz feliz feliz... Comandos generales nop (00, 01) (no) nop Absolutamente NADA. end (02) (fin) end Termina la ejecución del script. return (03) (volver) return Vuelve a donde has sido llamado (call o #org). Como el sistema GOSUB...RETURN de Basic call (04) (llamar) call puntero Llama a otro script. Puedes volver a ahí mediante return. Ejemplo: call JUMP_BAGISFULL goto (05) (ir a) goto punteroobjetivo Continúa la ejecución desde el putnero objetivo. Return no está permitido. if (06) (si) if valorcondicional acción punteroobjetivo Si la última comparación devolvió un valor concreto, saltar o ir a otro script. Las acciones pueden ser goto o call. Si no se especifica, se presume call por loq ue return puede ser usado. Los valores condicionales son: 00 – Menor/falso (<<), tb FALSE 01 – Igual/verdadero ( ), tb TRUE 02 - Mayor (>>) 03 – Menor o igual (>=) 04 – Mayor o igual (<=) 05 – Desigual (!=) Ejemplo: compare LASTRESULT 0x4 if TRUE goto JUMP_BAGISFULL boxset (09) (determinar la caja) Aliases: callstd boxset valor Llama a una función standart. En general se usa para mostrar la caja de diálogo con los parámetros 0x04 o 0x06, o usar 0x05 para preguntas de si/no (la cual, además, mete un valor en LASTRESULT. Ejemplo: message 0x604000 \'texto normal boxset 4 \'no cerrarse despues de pulsar A message 0x604020 \'pregunta boxset BOXSET_YESNO \'(= 0x05) if NO 0x600020 \'ir a la rama "no" \'la rama “si” va aquí ... end #org 0x600020 \'la rama “no” va aquí ... end message (0F) (mensaje) message punterodelmensaje Prepara un puntero para usar por comandos como boxset. Se usa para los textos. Ejemplo: message 0x604020 boxset 0x06 \'cerrar al puslar A setvar (16) (determinar variable) Alias: setvar1 setvar indicevariable numerovalor Determina una variable a un valor concreto. Analogo a A = 4 de Basic copyvar (19) (copiar variable) Alias: setvar2 copyvar indicevariable indicevariable Copia el valor de una variable a otra. Analogo al A = B de Basic. copyvarifnotzero (1A) (copiar variable si no es 0) Alias: setvar3 copyvarifnotzero variable variable Copia el valor de una variable a otra, si esta no tiene como valor 0. Analogo al IF B > 0 THEN A = B de Basic. compare (21) (comparar) compare variable valor Compara una variable con un valor. Usado en conjunción con if y mayormente. con LASTRESULT como valor. Compares a variable with a value. Used in conjunction with if and mostly with LASTRESULT as a parameter. Ejemplo: compare LASTRESULT 0x4 if TRUE JUMP_BAGISFULL special (25) (especial) special indicedeevento Activa un evento especial Ejemplo: special SPECIAL_WALLYCATCH \'Reproduce la película de Wally cazando al Ralts *NOTA DE BARO: estaría bien probar los especiales, quizás encontrais algo que os guste. special2 (26) (especial2) special2 variable indice ¿Comprueba cosas especiales? Se usa en revanchas y otras situaciones especiales. pause (28) (pausa) pause itiempo setflag (29) (poner bandera) setflag numeroflag Activa un flag. Ejemplo: setflag 0x64 checkflag 0x64 compare LASTRESULT YES if 1 0x600020 \'ir a la rama “si” \'rama “no” va aquí ... end #org 0x600020 \'rama “si” va aquí ... end clearflag (2A) (limpiar bandera) clearflag numero flag Desactiva un flag. checkflag (2B) (comprueba flag) checkflag numeroflag comprueba si el flag está activado (ver ejemplo en setflag) cry (30) (grito) cry indiceespecies Reproduce el grito de la especie indicada. Ejemplo: cry PKMN_PIKACHU fanfare (31) (himno) fanfare indicecanción Reproduce una canción de fondo. waitfanfare (32) (espera himno) waitfanfare Espera por el sonido de fanfare para acabar. playsound (33) (tocar canción) playsound indicecanción Cambia abruptamente a otra canción. fadedefault (35) (aparece por defecto) fadedefault Suavemente cambia a la canción por defecto del mapa fadesound (36) (aparece canción) fadesound indicecanción Suavemente cambia a la canción con el indice indicado. fadeout (37) (desaparece) fadeout Suavemente apaga la canción sonando fadein (38) (aparece) fadein Suavemente aparece la canción que estaba sonando antes. warp (39) (teletransporte) warp bancodelmapa numerodelnivel numerodelasalida checkitem (47) (comprobar objeto) checkitem indiceobjeto Comprueba si el jugador lleva como mínimo una unidad del objeto mencionado. Ejemplo: checkitem ITEM_MAXPOTION compare LASTRESULT YES if TRUE 0x604020 applymovement (4F) (aplicar movimiento) applymovement Spriteafectado punterodelmovimiento Aplica el movimiento descrito en el puntero. Ejemplo: applymovement 0x5 0x604020 pause 0x0 \'espera a que el movimiento se complete movesprite (57) (mueve minisprite) movesprite indice ejeX ejeY faceplayer (5A) (encarar sprite) faceplayer Gira el minisprite hacia el jugador trainerbattle (5C) (batalla de entrenador) trainerbattle tipo batalla punterodeltextointro punterodeltextovencido Empieza un combate de entrenador El tipo es 0x00 para batallas normales, 0x04 para 2 contra 2 y 0x05 para revanchas. Para batallas 2 contra 2 o para gimnasios, añade otro parámetro, punteroespecial. Las batallas 2-2 requieren punteroespecial para mostrar un mensaje si el jugador solo tiene un pokémon. Los líderes de gimnasio te darán regalos como medallas en la continuación de la batalla. Mira tu lider favorito en scripted para ver un ejemplo. Ejemplo: trainerbattle 0 TEXTOINTRO TEXTOALVENCER message TEXTO DE DESPUES boxset 4 jingle (69) (sonidillo) jingle Se supone que reproduce un sonido, pero no hace nada. lock (6A) (bloquear) lock Bloquea el movimiento del sprite que llama release (6C) (liberar) release Devuelve el movimiento bloqueado con lock multi (6F) (multiple) multi posizquierda posarriba indicelista Cancelar Pone una lista de opciones para que escoja el jugador. Las opciones dependen de la lista (indicelista). Cancelar indica si el último elemento es Cancelar o no. (si sí, 0x01, si no, 0x00) La respuesta se almacena en LASTRESULT Ejemplo: message 0x604020 \'”que ciudad te gusta más?” choice 2 2 13 0 \'las opciones son littlerrot, slateport y lilycove compare LASTRESULT 1 if 0 0x600030 \'rama de littleroot if 1 0x600050 \'rama de slateport \'aquí va la rama de lilycove. No se necesita “il lastresult 3” givepokemon (79) (dar pokémon) givepokemon indiceespecie nivel Item Le da al jugador un pokémon de un determinado nivel y con un determinado objeto, si item > 0. pokemart (86) (poketienda) pokemart punterolistadeobjetos Inicia el sistema de compra de pokemart con los objetos/precios que se encuentran en punterolistadeobjetos. fadescreen (97) (fundido en negro) fadescreen in/out Fundido en negro hacia dentro/fuera checkgender (A0) (comprueba sexo) checkgender Pone un 1 en LASTRESULT si el jugador es una chica o 0 si es un chico. setmaptile (A2) (poner bloque en el mapa) setmaptile ejeX ejeY numerodebloque movpermitido Pone un tile en el mapa. Tienes que refrescar de algún modo esa parte, alejando la vista y volviendo, o llamar este comando desde el script del nivel. setweather (A4) (determinar clima) setweather valorclima Prepara un clima para ser activado por doweather Los valores son 00 - Nada 03 - Lluvia 04 – copos de nieve (Breve) 05 - Tormenta 06 - Niebla 07 – Ceniza 08 – Tormenta arena 09 – Otra niebla 0A – niebla clara 0B – Oscuridad (nocturno!!) 0C - Sofoco 0D – Tormenta 2 0E - Submarino 0F - Nada doweather (A5) (hacer clima) doweather Activa el clima preparado por setweather. Construídos (comandos complejos) wildbattle (batalla salvaje) wildbattle indiceespecie nivel estilo Originalmente un verdadero comando, ahora un construído. El estilo puede ser *0 normal *1 movimiento en zigzag, tierra *2 movimiento en zigzag, hierba *3 movimiento en torbellino Ejemplo: wildbattle 0x196 70 3 \'lucha contra un RAYQUAZA NIVEL 70! giveitem (dar objeto) giveitem objeto cantidad Da un objeto Este construído combina dos setvarifnotzero Ejemplo: giveitem ITEM_SODAPOP 1 Comandos chungos jumpstd (08) (salta std) jumpstd bValue Salta a una función estándar. Del estilo de BoxSet, pero con una lógica ligeramente diferente, como comparar en Basic\'s GOSUB con GOTO. comparevars (1B) (compara variables) comparevars variable variable comparevartobyte (1C) (compara variable con byte) comparevartobyte variable valorbyte comparevartofarbyte (1D) (compara variable con byte lejano) comparevartofarbyte variable puntero Byte lejano = byte localizado en un puntero. comparefarbytetovar (1E) (compara byte lejano con variable) comparefarbytetovar puntero variable Compares a byte at some location with a variable. comparefarbytetobyte (1F) (compara byte lejano con byte) comparefarbytetobyte puntero valorbyte Compares a byte at some location with a byte value. comparefarbytetofarbyte (20) (compara byte lejano con byte lejano) comparefarbytetofarbyte puntero puntero Variables predefinidas y constantes en STD.RBH B_YES, B_NO, B_TRUE, B_FALSE, B_BOY y B_GIRL (SI, NO, VERDADERO, FALSO, CHICO, CHICA) Me gustan las booleanas (kyoufu Kawa). Son fáciles de #definir. B_<<, B_ , B_>>, B_<=, B_>= y B_!= Como B_TRUE y B_FALSE arriba, pero con todo el poder lógico para los más expertos. BOXSET_DONTCLOSE, BOXSET_YESNO y BOXSET_NORMAL Parámetros de Boxset más normales. MENU_PARTY, MENU_POKEDEX y MENU_NAVIGATOR Parámetros de Setflag para cada uno d elos tres elementos del menu (equipo, pokedex y navegador). Se peude usar, por ejemplo, para que el TEAM te robe tu material. 0x800D – LASTRESULT (ultimo resultado) Casi siempre que algo se comprueba, la información se mete en esta variable: LASTRESULT. SPRITEMOVE_INDEX SPRITEMOVE_NEWXPOS SPRITEMOVE_NEWYPOS Combinados con Setvar, los mueves a cierta posición en el mapa. Se usa en littleroot para mover a la madre dependiendo del sexo del jugador. APPLYMOVE_PLAYER (aplicarmovimiento al jugador) Porque tiene más sentido que “0xFF” en applymovement. Ponlo como el indice del sprite para que el afectado sea el jugador. Aunque es más corto el típico "0xFF" JUMP_BAGISFULL (saltar a “si la mochila está llena”) Comandos